“Embedded systems” are, generally speaking, special purpose computer systems designed to perform certain dedicated functions that have been embedded into a device. Examples include mobile telephones and other hand-held or mobile devices, and set top boxes for cable and satellite television. Microprocessors or other logic circuits embedded in these devices or equipment are programmed to perform specific functions for the device. Economic considerations dictate that embedded systems have limited processing capability and memory and, at least in the case of mobile devices, smaller screens. Typically, it is just enough to perform their intended functions. Resource-limited devices, such as these, are generally not intended to be independently programmable by end users. They sometimes do not permit the user to load additional applications.
Computer applications are typically written using standard computational programming languages, such as C and C++. However, in order to more easily create sophisticated user interfaces and other applications providing rich media content and experiences, developers are turning to the use of graphics-oriented programming languages and platforms for developing rich media applications. These platforms reduce the burden of programming media-intensive interfaces and rich media applications by taking advantage of development tools oriented toward graphics and rich media, and presentation engines that perform much of the graphics processing.
Examples of applications that can be written for set top boxes in a graphics language or platform include those that enable users to interact with advanced network services, such as video on demand (VOD) services, digital video recorder (DVR) services, and electronic program guides, as well as games and many other types of applications. Similarly, on a mobile network, a network operator may want to deploy rich media applications that can be downloaded as required to the mobile device for allowing easy interaction with services offered by a mobile network, such as, for example, mobile television, music, and podcasting, in addition to services that enable easy access to remote devices and internet-based content.
In an application written using animated graphics, a series of static displays are sequentially rendered to create the illusion of animation. Each of these displays will be referred to generally as a “frame.” Examples of such development environments include the Adobe® Flash® development tools, which generate SWF files, and programs written using SVG, which is a language for describing two-dimensional graphics. These applications or files describe graphical elements, text and other elements that are to be rendered, typically using standard vector graphic techniques. They also specify, for each frame, the placement of elements on a “canvas” within the frame. Bit map images, video and audio can also be referenced and placed and displayed or played according to a time line. A “presentation engine” or “player,” reads the descriptions of the frames and the graphical elements and renders the frames according to the specified time line, and executes scripts associated with each frame and interaction with a user or the device on which the file is being executed.
For example, the Flash® development environment, which is widely used for creating web-based applications, generates a SWF file that encodes descriptions of the graphical elements, a description of each frame in terms of placement of graphical elements on the canvas for the frame, and any scripts that are to executed in connection with rendering of the frame or the user's interaction with it. The frames are rendered a specified frame rate. Similarly, SVG specifies document containing one or more “pages” for display. Each page contains an ordered grouping of graphical elements. Only one grouping is displayed at a time. Animation is created by using Synchronized Multimedia Integration Language (SMIL) to specify timing for rendering each page. Scripts are used to provide interaction with the elements and navigation between the pages.
A rich media application written using an animated graphics format or language does not need to be concerned with the details of rendering the graphics and coordinating video and audio, simplifying development and reducing the size of the applications. Scripts can be kept relatively simple by taking advantage of application programming interfaces (APIs) that are implemented by the presentation engines. The APIs typically provide a suite of standard functions, as well as functions useful for providing interactivity with the animated graphics and to controlling or interacting with the devices. Developers of applications are thus able to concentrate on the details of the applications, while developers of the presentation engine focus on enhancing playback performance of the presentation engine for particular devices and extending its functionality.
In addition to shortened development and deployment cycles, a further benefit of using animated graphics languages and authoring tools to generate rich media applications is that it allows dividing the task of writing the applications between graphics designers, who use authoring tools to create the graphical portions of the programs, and programmers who write scripts to add functionality and interactively.
One example of a presentation engine for executing a rich media application written using animated graphics on a resource limited device is the MachBlue™ presentation engine distributed by Bluestreak Networks, Inc. of Montreal, Canada. Other examples are the Flash® and Flash Lite® players of Adobe Systems, Inc. The MachBlue™ presentation engine is designed to run as middleware on embedded systems with limited processing power and memory, such as set top boxes for cable and satellite television and similar devices. The MachBlue™ presentation engine interprets and renders files encoded in SWF file format (though it does not support rendering all features of Flash® authoring environment) as well as certain extensions to the SWF file format adapted for specific devices.